package com.reactim.message.service;

import com.reactim.message.controller.ConversationController.CreateConversationRequest;
import com.reactim.message.dto.response.ConversationResponse;
import com.reactim.message.entity.Conversation;
import reactor.core.publisher.Mono;

import java.util.List;

/**
 * 会话服务接口
 */
public interface ConversationService {

    /**
     * 根据用户获取会话列表
     */
    Mono<List<ConversationResponse>> getConversationsByUser(String username);

    /**
     * 根据ID获取会话信息
     */
    Mono<ConversationResponse> getConversationById(String conversationId);

    /**
     * 创建会话
     */
    Mono<ConversationResponse> createConversation(String username, CreateConversationRequest request);

    /**
     * 生成会话ID（群聊）
     */
    String generateConversationId(Conversation.ConversationType type, Long groupId);

    /**
     * 生成会话ID（私聊）
     */
    String generateConversationId(Conversation.ConversationType type, Long fromUserId, Long toUserId);

    /**
     * 更新会话最后消息
     */
    Mono<Void> updateLastMessage(String conversationId, String messageId, String messagePreview);
}